package core.heuristic;

import java.util.ArrayList;

import javax.swing.ListModel;
import javax.swing.event.ListDataListener;

import core.course.TimeTable;
import core.interfaces.IState;
import core.interfaces.IUtility;

public class HeuristicsManager extends ArrayList<IUtility<IState<TimeTable>, Double>> implements ListModel
{
	private static final long serialVersionUID = -6827574780778006002L;
	private static HeuristicsManager STATIC_HeuristicsManager = new HeuristicsManager();
	
	public static void STATIC_INIT()
	{
		STATIC_HeuristicsManager.add(new UtilEasy1());
		STATIC_HeuristicsManager.add(new AmbitiousHeuristic());
		STATIC_HeuristicsManager.add(new NormalHeuristic());
		STATIC_HeuristicsManager.add(new UtilEasyHighAvg());
	}
	
	public static HeuristicsManager getInstance()
	{
		return STATIC_HeuristicsManager;
	}
	
	protected HeuristicsManager()
	{
		
	}

	@Override
	public void addListDataListener(ListDataListener l)
	{

		
	}

	@Override
	public Object getElementAt(int index)
	{
		return this.get(index);
	}

	@Override
	public int getSize()
	{
		return this.size();
	}

	@Override
	public void removeListDataListener(ListDataListener l)
	{

		
	}
	
}
